基于5台linux虚拟机搭建HDFS HA高可用集群

发布 : 2018-10-05 分类 : 大数据 浏览 :

目录

  1. 基于5台linux虚拟机搭建HDFS HA高可用集群
    1. hdfs集群部署规划
    2. 准备5台linux虚拟机
    3. 安装virtual box
      1. 解决VirtualBox无法显示鼠标问题
    4. 在Virtual box上配置NAT+Host Only网络
      1. 关闭防火墙
      2. 添加NAT网络
        1. 配置虚拟机网卡
        2. 配置网络
          1. 动态分配一个ip地址
          2. 设置静态ip地址
        3. 配置DNS
          1. 检查NetManager的状态
          2. 检查NetManager管理的网络接口
          3. 检查NetManager管理的网络连接
          4. 设置dns
          5. 让dns配置生效
          6. 设置静态、瞬态或灵活主机名,分别使用–static,–transient或–pretty选项
        4. 重启CentOS 7之后,查看主机名
        5. 测试网络通信情况
      3. 配置Host Only
        1. 配置虚拟机网卡
        2. 在宿主机查看Host ONly网卡的网关
        3. 虚拟机中查看网络状态
        4. 配置hosts(配置本机的hostname到ip地址的映射)
      4. 配置Xshell
      5. 配置yum
      6. 安装JDK
        1. 将jdk-8u131-linux-x64.rpm通过WinSCP上传到虚拟机中
        2. 安装JDK
        3. 配置jdk相关的环境变量
        4. 测试jdk安装是否成功
    5. 在另外4个虚拟机中安装CentOS集群
      1. 在hadoop01的操作
      2. 在hadoop02操作
        1. 更改用户名
        2. 更改ifcfg-enp0s3网卡静态IP
        3. 更改ifcfg-enp0s8网卡静态IP
      3. 在hadoop03操作
        1. 更改用户名
        2. 更改ifcfg-enp0s3网卡静态IP
        3. 更改ifcfg-enp0s8网卡静态IP
      4. 在hadoop04操作
        1. 更改用户名
        2. 更改ifcfg-enp0s3网卡静态IP
        3. 更改ifcfg-enp0s8网卡静态IP
      5. 在hadoop05操作
        1. 更改用户名
        2. 更改ifcfg-enp0s3网卡静态IP
        3. 更改ifcfg-enp0s8网卡静态IP
      6. 连接5台虚拟机
    6. 配置5台CentOS为ssh免密码互相通信
    7. 同步集群时间
      1. 使用yum安装ntpdate
      2. 设置定时同步时间
    8. hdfs HA集群部署规划
    9. 部署zookeeper集群
      1. 在五台机器上创建目录
      2. 下载zookeeper 3.4.9
      3. 解压压缩文件
      4. 设置Zookeeper环境变量
      5. 编辑zoo.cfg配置文件
      6. 将zk安装目录传送至hadoop04
      7. 在hadoop04上操作
      8. 将zk安装目录传送至hadoop05
      9. 在hadoop05上操作
      10. 三台机器上执行
      11. 查看集群状态
    10. 部署hadoop集群
      1. 先在hadoop01上操作
        1. 配置环境变量
        2. 编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh文件
        3. 编辑$HADOOP_HOME/etc/hadoop/core-site.xml文件
        4. 编辑$HADOOP_HOME/etc/hadoop/hdfs-site.xml文件
        5. 编辑slaves文件
      2. 拷贝hadoop到其他4台机器上
    11. 启动hadoop集群
      1. 在hadoop03、hadoop04、hadoop05上启动journal nodes集群[这步可省略]
      2. 格式化namenode(hadoop01上执行)
      3. 格式化ZKFC(hadoop01上执行)
      4. 启动hdfs集群(hadoop01上执行)
    12. 查看hadoop集群

hdfs集群部署规划

All text

准备5台linux虚拟机

都是CentOS 7操作系统,64位,每台机器都是单cpu,1G内存,安装JDK 1.8

启动一个virtual box虚拟机管理软件(vmware,发现不太稳定,主要是当时搭建一个hadoop大数据的集群,发现每次休眠以后再重启,集群就挂掉了)

virtual box,发现很稳定,集群从来不会随便乱挂,所以就一直用virtual box了

安装virtual box

用的是什么centos镜像,CentOS比较新的版本是7了,然后服务器上装操作系统的话,内存一般比较大,一般是安装64位的,32位的有一个最大内存4G的限制

  • (1)使用提供的CentOS 7镜像即可,CentOS-7-x86_64-Minimal-1611.iso。
  • (2)创建虚拟机:打开Virtual Box,点击”新建”按钮,点击”下一步”,输入虚拟机名称为hadoop01,选择操作系统为Linux,选择版本为Red Hat-64bit,分配1024MB内存,后面的选项全部用默认,在Virtual Disk File location and size中,一定要自己选择一个目录来存放虚拟机文件,最后点击”create”按钮,开始创建虚拟机。
  • (3)设置虚拟机网卡:选择创建好的虚拟机,点击”设置”按钮,在网络一栏中,连接方式中,选择”Bridged Adapter”。
  • (4)安装虚拟机中的CentOS 7操作系统:选择创建好的虚拟机,点击”开始”按钮,选择安装介质(即本地的CentOS 7镜像文件),按照课程选择后自动安装即可
  • (5)安装完以后,CentOS会提醒你要重启一下,就是reboot,你就reboot就可以了。
  • (6)配置网络

All text
All text
All text
All text
All text
All text
All text

解决VirtualBox无法显示鼠标问题

All text

将Pointing Device改为USB Tablet

在Virtual box上配置NAT+Host Only网络

注意:在公司wifi下用桥接模式,可能会出现某些ip无法远程连接的情况【这些ip可能已经被分配了】

一般我们给虚拟机设置网络都用NAT模式

关闭防火墙

1
2
3
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service

添加NAT网络

All text

网段自己设定,用前24位作为网段地址,意味着子网掩码是255.255.255.0

配置虚拟机网卡

All text

配置网络

动态分配一个ip地址
1
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
1
ONBOOT=yes
1
service network restart
1
ip addr
设置静态ip地址
1
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
DEVICE=enp0s3
ONBOOT=yes
IPADDR=10.0.2.180
NETMASK=255.255.255.0
GATEWAY=10.0.2.1
1
service network restart
1
ip addr

配置DNS

检查NetManager的状态
1
systemctl status NetworkManager.service
检查NetManager管理的网络接口
1
nmcli dev status
检查NetManager管理的网络连接
1
nmcli connection show
设置dns
1
nmcli con mod enp0s3 ipv4.dns "114.114.114.114 8.8.8.8"
让dns配置生效
1
nmcli con up enp0s3
设置静态、瞬态或灵活主机名,分别使用–static,–transient或–pretty选项
1
2
3
4
5
6
7
[root@localhost ~]# hostnamectl set-hostname hadoop01
[root@localhost ~]# hostnamectl --static
hadoop01
[root@localhost ~]# hostnamectl --transient
hadoop01
[root@localhost ~]# hostnamectl --pretty
hadoop01

重启CentOS 7之后,查看主机名

1
2
[root@hadoop01 ~]# hostname
hadoop01

测试网络通信情况

1
ping www.baidu.com

配置Host Only

配置虚拟机网卡

All text

在宿主机查看Host ONly网卡的网关

1
2
3
4
sparsematrix:~ matrix$ ifconfig
vboxnet0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:00
inet 192.168.56.1 netmask 0xffffff00 broadcast 192.168.56.255

虚拟机中查看网络状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@hadoop01 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:0d:44:d9 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.233/24 brd 10.0.2.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::6f39:ac6d:c0ab:b93c/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:89:af:d1 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.101/24 brd 192.168.56.255 scope global dynamic enp0s8
valid_lft 1037sec preferred_lft 1037sec
inet6 fe80::2bdc:e63a:1310:3c57/64 scope link
valid_lft forever preferred_lft forever

可以看到网卡2的配置文件名为enp0s8,但这个文件并不存在,需要手动创建,可以直接复制enp0s3文件,文件名为enp0s8,打开enp0s8进行修改。

1
[root@hadoop01 ~]# cp -R /etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifcfg-enp0s8

编辑ifcfg-enp0s8网卡

  • 修改NAME、DEVICE
  • 删除UUID
  • 修改IPADDR、GATEWAY为Host Only网卡对应地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@hadoop01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s8
DEVICE=enp0s8
ONBOOT=yes
DNS1=114.114.114.114
DNS2=8.8.8.8
IPADDR=192.168.56.180
PREFIX=24
GATEWAY=192.168.56.1

配置hosts(配置本机的hostname到ip地址的映射)

1
2
[root@hadoop01 ~]# vi /etc/hosts
192.168.56.180 hadoop01
1
service network restart
1
ip addr

配置Xshell

此时就可以使用Xshell从本机连接到虚拟机进行操作了

一般来说,虚拟机管理软件,virtual box,可以用来创建和管理虚拟机

但是一般不会直接在virtualbox里面去操作,因为比较麻烦,没有办法复制粘贴

Xshell,在windows宿主机中,去连接virtual box中的虚拟机

关闭windows的防火墙

后面要搭建集群,有的大数据技术的集群之间,在本地你给了防火墙的话,可能会没有办法互相连接,会导致搭建失败

配置yum

1
2
3
yum clean all
yum makecache
yum install wget

安装JDK

将jdk-8u131-linux-x64.rpm通过WinSCP上传到虚拟机中

1
scp -C -r jdk-8u131-linux-x64.rpm root@192.168.56.180:/root

安装JDK

1
rpm -ivh jdk-8u131-linux-x64.rpm

配置jdk相关的环境变量

1
2
3
4
[root@hadoop01 ~]# vi .bashrc
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin
[root@hadoop01 ~]# source .bashrc

测试jdk安装是否成功

1
2
3
4
[root@hadoop01 ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

在另外4个虚拟机中安装CentOS集群

按照上述步骤,再安装四台一模一样环境的linux机器

另外四台机器的hostname分别设置为hadoop02,hadoop03,hadoop04,hadoop05

安装好之后,在每台机器的hosts文件里面,配置好所有的机器的ip地址到hostname的映射关系

在hadoop01的操作

1
[root@hadoop01 ~]# vi /etc/hosts
1
2
3
4
5
192.168.56.180 hadoop01
192.168.56.181 hadoop02
192.168.56.182 hadoop03
192.168.56.183 hadoop04
192.168.56.184 hadoop05
1
2
[root@hadoop01 ~]# service network restart
Restarting network (via systemctl): [ OK ]

在hadoop02操作

更改用户名

1
hostnamectl set-hostname hadoop02

更改ifcfg-enp0s3网卡静态IP

1
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

修改IPADDR的同时,需要删除UUID

1
IPADDR=10.0.2.181
1
service network restart

更改ifcfg-enp0s8网卡静态IP

1
vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

修改IPADDR的同时,需要删除UUID

1
IPADDR=192.168.56.181
1
service network restart

在hadoop03操作

更改用户名

1
hostnamectl set-hostname hadoop03

更改ifcfg-enp0s3网卡静态IP

1
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

修改IPADDR的同时,需要删除UUID

1
IPADDR=10.0.2.182
1
service network restart

更改ifcfg-enp0s8网卡静态IP

1
vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

修改IPADDR的同时,需要删除UUID

1
IPADDR=192.168.56.182
1
service network restart

在hadoop04操作

更改用户名

1
hostnamectl set-hostname hadoop04

更改ifcfg-enp0s3网卡静态IP

1
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

修改IPADDR的同时,需要删除UUID

1
IPADDR=10.0.2.183
1
service network restart

更改ifcfg-enp0s8网卡静态IP

1
vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

修改IPADDR的同时,需要删除UUID

1
IPADDR=192.168.56.183
1
service network restart

在hadoop05操作

更改用户名

1
hostnamectl set-hostname hadoop05

更改ifcfg-enp0s3网卡静态IP

1
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

修改IPADDR的同时,需要删除UUID

1
IPADDR=10.0.2.184
1
service network restart

更改ifcfg-enp0s8网卡静态IP

1
vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

修改IPADDR的同时,需要删除UUID

1
IPADDR=192.168.56.184
1
service network restart

连接5台虚拟机

1
ssh root@192.168.56.180
1
ssh root@192.168.56.181
1
ssh root@192.168.56.182
1
ssh root@192.168.56.183
1
ssh root@192.168.56.184

配置5台CentOS为ssh免密码互相通信

在5台机器上配置对本机的ssh免密码登录

1
ssh-keygen -t rsa
1
[root@hadoop01 ~]# ssh-keygen -t rsa
1
[root@hadoop02 ~]# ssh-keygen -t rsa
1
[root@hadoop03 ~]# ssh-keygen -t rsa
1
[root@hadoop04 ~]# ssh-keygen -t rsa
1
[root@hadoop05 ~]# ssh-keygen -t rsa

生成本机的公钥,过程中不断敲回车即可,ssh-keygen命令默认会将公钥放在/root/.ssh目录下

配置本机免密码登录

1
2
cd /root/.ssh
cp id_rsa.pub authorized_keys
1
2
[root@hadoop01 ~]# cd /root/.ssh
[root@hadoop01 .ssh]# cp id_rsa.pub authorized_keys
1
2
[root@hadoop02 ~]# cd /root/.ssh
[root@hadoop02 .ssh]# cp id_rsa.pub authorized_keys
1
2
[root@hadoop03 ~]# cd /root/.ssh
[root@hadoop03 .ssh]# cp id_rsa.pub authorized_keys
1
2
[root@hadoop04 ~]# cd /root/.ssh
[root@hadoop04 .ssh]# cp id_rsa.pub authorized_keys
1
2
[root@hadoop05 ~]# cd /root/.ssh
[root@hadoop05 .ssh]# cp id_rsa.pub authorized_keys

将公钥复制为authorized_keys文件,此时使用ssh连接本机就不需要输入密码了

配置五台机器互相之间的ssh免密码登录

使用ssh-copy-id -i hostname命令将本机的公钥拷贝到指定机器的authorized_keys文件中

1
2
3
4
[root@hadoop01 ~]# ssh-copy-id -i hadoop02
[root@hadoop01 ~]# ssh-copy-id -i hadoop03
[root@hadoop01 ~]# ssh-copy-id -i hadoop04
[root@hadoop01 ~]# ssh-copy-id -i hadoop05
1
2
3
4
[root@hadoop02 ~]# ssh-copy-id -i hadoop01
[root@hadoop02 ~]# ssh-copy-id -i hadoop03
[root@hadoop02 ~]# ssh-copy-id -i hadoop04
[root@hadoop02 ~]# ssh-copy-id -i hadoop05
1
2
3
4
[root@hadoop03 ~]# ssh-copy-id -i hadoop01
[root@hadoop03 ~]# ssh-copy-id -i hadoop02
[root@hadoop03 ~]# ssh-copy-id -i hadoop04
[root@hadoop03 ~]# ssh-copy-id -i hadoop05
1
2
3
4
[root@hadoop04 ~]# ssh-copy-id -i hadoop01
[root@hadoop04 ~]# ssh-copy-id -i hadoop02
[root@hadoop04 ~]# ssh-copy-id -i hadoop03
[root@hadoop04 ~]# ssh-copy-id -i hadoop05
1
2
3
4
[root@hadoop05 ~]# ssh-copy-id -i hadoop01
[root@hadoop05 ~]# ssh-copy-id -i hadoop02
[root@hadoop05 ~]# ssh-copy-id -i hadoop03
[root@hadoop05 ~]# ssh-copy-id -i hadoop04

同步集群时间

使用yum安装ntpdate

1
yum install -y ntpdate

设置定时同步时间

1
crontab -e
1
*/10 * * * * /usr/sbin/ntpdate time.nist.gov

hdfs HA集群部署规划

namenode,就相当于是在eclipse中新建一个工程,取个名字叫做namenode,在工程里面开发代码,写好代码之后,就可以打包,在linux服务器上,用java -jar给他启动,namenode就是这个意思

namenode就是一个java工程,写完里面的代码,打包,在linux上部署,java -jar启动,出来一个进程,namenode其实就是一个系统,启动的时候就是一个进程

1
2
3
4
5
hadoop01:active namenode,ZKFC
hadoop02:standby namenode,ZKFC
hadoop03:datanode,journal node,QuorumPeerMain
hadoop04:datanode,journal node,QuorumPeerMain
hadoop05:datanode,journal node,QuorumPeerMain

All text

部署zookeeper集群

在hadoop03、hadoop04、hadoop05三台机器上部署zookeeper

在五台机器上创建目录

1
mkdir -p /usr/local/program/service

下载zookeeper 3.4.9

下载到/usr/local/program/service目录下

1
2
[root@hadoop03 ~]# cd /usr/local/program/service
[root@hadoop03 service]# wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

解压压缩文件

1
2
[root@hadoop03 ~]# cd /usr/local/program/service
[root@hadoop03 service]# tar -zxf zookeeper-3.4.9.tar.gz

设置Zookeeper环境变量

1
[root@hadoop03 ~]# vi /etc/profile
1
2
export ZOOKEEPER_HOME=/usr/local/program/service/zookeeper-3.4.9
export PATH=$PATH:$ZOOKEEPER_HOME/bin
1
[root@hadoop03 ~]# source /etc/profile

编辑zoo.cfg配置文件

1
2
[root@hadoop03 ~]# cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
[root@hadoop03 ~]# vi $ZOOKEEPER_HOME/conf/zoo.cfg
1
2
3
4
5
dataDir=/usr/local/program/data/zookeeper
dataLogDir=/usr/local/program/log/zookeeper
server.1=hadoop03:2888:3888
server.2=hadoop04:2888:3888
server.3=hadoop05:2888:3888
1
2
3
4
mkdir -p /usr/local/program/data/zookeeper
mkdir -p /usr/local/program/log/zookeeper
cd /usr/local/program/data/zookeeper
echo 1 > myid

将zk安装目录传送至hadoop04

1
2
[root@hadoop03 ~]# sscp -r /usr/local/program/service/zookeeper-3.4.9 hadoop04:/usr/local/program/service/
[root@hadoop03 ~]# sscp -r /etc/profile hadoop04:/etc/

在hadoop04上操作

1
2
3
4
5
[root@hadoop04 ~]# ssource /etc/profile
[root@hadoop04 ~]# smkdir -p /usr/local/program/data/zookeeper
[root@hadoop04 ~]# smkdir -p /usr/local/program/log/zookeeper
[root@hadoop04 ~]# scd /usr/local/program/data/zookeeper
[root@hadoop04 ~]# secho 2 > myid

将zk安装目录传送至hadoop05

1
2
[root@hadoop03 ~]# scp -r /usr/local/program/service/zookeeper-3.4.9 hadoop05:/usr/local/program/service/
[root@hadoop03 ~]# scp -r /etc/profile hadoop05:/etc/

在hadoop05上操作

1
2
3
4
5
[root@hadoop05 ~]# ssource /etc/profile
[root@hadoop05 ~]# smkdir -p /usr/local/program/data/zookeeper
[root@hadoop05 ~]# smkdir -p /usr/local/program/log/zookeeper
[root@hadoop05 ~]# scd /usr/local/program/data/zookeeper
[root@hadoop05 ~]# secho 3 > myid

三台机器上执行

1
zkServer.sh start

查看集群状态

  • 查看进程
    • jps
  • 查看集群状态,主从信息
    • zkServer.sh status
1
2
3
[root@hadoop03 zookeeper]# jps
2550 Jps
2539 QuorumPeerMain
1
2
3
[root@hadoop04 zookeeper]# jps
2594 QuorumPeerMain
2619 Jps
1
2
3
[root@hadoop05 zookeeper]# jps
2508 QuorumPeerMain
2540 Jps

部署hadoop集群

先在hadoop01上操作

1
tar -zxf hadoop-2.9.1.tar.gz -C /usr/local/program/service/

配置环境变量

1
[root@hadoop01 ~]# vi /etc/profile
1
2
3
export JAVA_HOME=/usr/java/latest
export HADOOP_HOME=/usr/local/program/service/hadoop-2.9.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
1
source /etc/profile

编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh文件

1
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
1
export JAVA_HOME=/usr/java/latest

编辑$HADOOP_HOME/etc/hadoop/core-site.xml文件

1
vim $HADOOP_HOME/etc/hadoop/core-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/program/service/hadoop-2.9.1/tmp</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop03:2181,hadoop04:2181,hadoop05:2181</value>
</property>
</configuration>

编辑$HADOOP_HOME/etc/hadoop/hdfs-site.xml文件

1
vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<configuration>
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop01:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop01:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop02:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop02:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop03:8485;hadoop04:8485;hadoop05:8485/ns1</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/program/service/hadoop-2.9.1/journaldata</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

编辑slaves文件

1
vi $HADOOP_HOME/etc/hadoop/slaves
1
2
3
hadoop03
hadoop04
hadoop05

上面其实就已经将active namenode给配置好了

拷贝hadoop到其他4台机器上

1
2
3
4
scp -r /usr/local/program/service/hadoop-2.9.1 hadoop02:/usr/local/program/service
scp -r /usr/local/program/service/hadoop-2.9.1 hadoop03:/usr/local/program/service
scp -r /usr/local/program/service/hadoop-2.9.1 hadoop04:/usr/local/program/service
scp -r /usr/local/program/service/hadoop-2.9.1 hadoop05:/usr/local/program/service

配置环境变量

启动hadoop集群

在hadoop03、hadoop04、hadoop05上启动journal nodes集群[这步可省略]

1
$HADOOP_HOME/sbin/hadoop-daemon.sh start journalnode

格式化namenode(hadoop01上执行)

1
hdfs namenode -format
1
scp -r /usr/local/program/service/hadoop-2.9.1/tmp root@hadoop02:/usr/local/program/service/hadoop-2.9.1/
1
hdfs namenode -bootstrapStandby

格式化ZKFC(hadoop01上执行)

1
hdfs zkfc -formatZK

启动hdfs集群(hadoop01上执行)

1
$HADOOP_HOME/sbin/start-dfs.sh

这个脚本会自动在hadoop01和hadoop02上启动一个namenode,同时启动一个ZKFC,然后会自动在hadoop03、hadoop04、hadoop05上分别启动一个datanode

查看hadoop集群

在hadoop01和hadoop02访问50070端口即可

All text

All text

本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2018/10/05/基于5台linux虚拟机搭建HDFS HA高可用集群/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹